package com.ecjtu.stadiumre_servations.controller;

import com.ecjtu.stadiumre_servations.entity.dto.DataAnalysisDTO.DayDTO;
import com.ecjtu.stadiumre_servations.response.Result;
import com.ecjtu.stadiumre_servations.response.ResultCodeEnum;
import com.ecjtu.stadiumre_servations.service.DataAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;

@RestController
@RequestMapping("/dataAnalysis")
public class DataAnalysisController {
    @Autowired
    private DataAnalysisService dataAnalysisService;
    /**
     * 统计全部，输入天数，start的00:00:00至end的23:59:59，choice： 1，查询全部，2 查询场馆，数据保存在数据库
     */
    @PostMapping("/statsAllForPeriodDetailed")
    public Result statsAllForPeriodDetailed(@RequestBody DayDTO dayDTO )
    {
        //检测开始时间是否大于结束时间
        if ( dayDTO.getStartDay().isAfter(dayDTO.getEndDay()) )
        {
            //抛出异常
            return Result.fail("开始时间大于结束时间!");

//        if ( !dayDTO.getEndDay().isBefore(LocalDate.now()) )
//        {
//            //抛出异常
//            return Result.fail("统计结束日期必须在今天之前！！");
//        }
        }
        return Result.build(dataAnalysisService.statsAllByPeriodDetailed(dayDTO.getStartDay(), dayDTO.getEndDay(), dayDTO.getChoice(), dayDTO.getVenueId())
                , ResultCodeEnum.SELECT_SUCCESS);
        //return dataAnalysisService.statsAllByPeriodDetailed(dayDTO.getStartDay(), dayDTO.getEndDay(), dayDTO.getChoice(), dayDTO.getVenueId());
    }
    /**
     * 从数据库中读取数据，统计总数据如总收益，总使用时间等等
     */
    @PostMapping("/statsAllForPeriodRough")
    public Result statsAllForPeriodRough(@RequestBody DayDTO dayDTO)
    {
        //检测开始时间是否大于结束时间
        if ( dayDTO.getStartDay().isAfter(dayDTO.getEndDay()) )
        {
            //抛出异常
            return Result.fail("开始时间大于结束时间!");
        }

        if ( !dayDTO.getEndDay().isBefore(LocalDate.now()) )
        {
            //抛出异常
            return Result.fail("统计结束日期必须在今天之前！！");
        }
        return Result.build(dataAnalysisService.statsAllByPeriodRough(dayDTO.getStartDay(), dayDTO.getEndDay(), dayDTO.getChoice(), dayDTO.getVenueId())
                , ResultCodeEnum.SELECT_SUCCESS);
    }
    /**
     * 和上一个方法一样，但是是按场馆类型统计的，即统计每个场馆类型的总数据，仅统计总收益，总使用时长，总使用次数（也可以统计其他数据，添加对应代码即可）
     */
    @PostMapping("/statByTypeRough")
    public Result statByTypeRough(@RequestBody DayDTO dayDTO)
    {
        //检测开始时间是否大于结束时间
        if ( dayDTO.getStartDay().isAfter(dayDTO.getEndDay()) )
        {
            //抛出异常
            return Result.fail("开始时间大于结束时间!");
        }

        if ( !dayDTO.getEndDay().isBefore(LocalDate.now()) )
        {
            //抛出异常
            return Result.fail("统计结束日期必须在今天之前！！");
        }
        return Result.build(dataAnalysisService.statByTypeRough(dayDTO.getStartDay(), dayDTO.getEndDay())
                , ResultCodeEnum.SELECT_SUCCESS);
    }

}
